// src/utils/request.js
import axios from 'axios';
import { ElMessage } from 'element-plus';

const service = axios.create({
    baseURL: process.env.VUE_APP_URL,
    timeout: 5000,
});

// 白名单：不需要 token 的接口
const whiteList = ['/login', '/register', '/menu', '/banner'];

// 请求拦截器
service.interceptors.request.use(
    (config) => {
        const url = config.url;

        // 如果不在白名单中，则添加 token
        if (!whiteList.some((path) => url.includes(path))) {
            const token = localStorage.getItem('token');
            if (token) {
                config.headers['Authorization'] = `Bearer ${token}`;
            } else {
                // 可选：跳转到登录页
                console.warn('Token 不存在，请先登录');
            }
            console.debug('请求地址：', url);
        }

        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    (res) => {
        if (res.config.isBlob) {
            return res.data;
        }
        const data = res.data;
        if (data.code !== 100) {
            console.debug(data)
            ElMessage.error(data.message || '请求失败');
            return Promise.reject(new Error(data.message || 'Error'));
        }

        return data;
    },
    (error) => {
        ElMessage.error(error.message || '网络异常');
        return Promise.reject(error);
    }
);

export default service;